package com.zenithmind.chat.pojo.dto;

import lombok.Data;

import jakarta.validation.constraints.*;
import java.util.List;

/**
 * 聊天群组DTO
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
public class ChatGroupDTO {

    /**
     * 群组名称
     */
    @NotBlank(message = "群组名称不能为空")
    @Size(max = 50, message = "群组名称长度不能超过50个字符")
    private String name;

    /**
     * 群组描述
     */
    @Size(max = 500, message = "群组描述长度不能超过500个字符")
    private String description;

    /**
     * 群组头像
     */
    private String avatar;

    /**
     * 群组类型（1-普通群，2-课程群，3-项目群，4-系统群）
     */
    @NotNull(message = "群组类型不能为空")
    @Min(value = 1, message = "群组类型值无效")
    @Max(value = 4, message = "群组类型值无效")
    private Integer type;

    /**
     * 群组状态（0-禁用，1-启用）
     */
    private Integer status;

    /**
     * 最大成员数
     */
    @Min(value = 2, message = "最大成员数不能少于2人")
    @Max(value = 1000, message = "最大成员数不能超过1000人")
    private Integer maxMembers;

    /**
     * 是否允许邀请（0-不允许，1-允许）
     */
    private Integer allowInvite;

    /**
     * 是否需要审核（0-不需要，1-需要）
     */
    private Integer needApproval;

    /**
     * 是否公开（0-私有，1-公开）
     */
    private Integer isPublic;

    /**
     * 群组标签
     */
    private List<String> tags;

    /**
     * 群公告
     */
    @Size(max = 1000, message = "群公告长度不能超过1000个字符")
    private String announcement;

    /**
     * 关联课程ID（课程群使用）
     */
    private String courseId;

    /**
     * 关联项目ID（项目群使用）
     */
    private String projectId;

    /**
     * 排序值
     */
    private Integer sort;

    /**
     * 初始成员ID列表
     */
    private List<String> memberIds;
}
